﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using MotionCS.CameraVision;
using MotionCS.Controller;
using MotionCS.Config;
using MotionCS.Enumerate;
using MotionCS.Path;

namespace MotionCS
{
    public enum GrabModeE
    {
        /// <summary>
        /// 点拍
        /// </summary>
        Point,
        /// <summary>
        /// 飞拍
        /// </summary>
        Flying
    }

    public class CameraModuleConfig
    {
        /// <summary>
        /// 模组名称
        /// </summary>
        public string Name;
        /// <summary>
        /// 模组Key
        /// </summary>
        public int ModuleKey;
        /// <summary>
        /// 取像模式
        /// </summary>
        public GrabModeE GrabMode;
        /// <summary>
        /// X轴标识
        /// </summary>
        public AxisEnum AxisX;
        /// <summary>
        /// Y轴标识
        /// </summary>
        public AxisEnum AxisY;
        /// <summary>
        /// 相机类型
        /// </summary>
        public CameraTypeE CameraType;
        /// <summary>
        /// 相机色彩
        /// </summary>
        public CameraColorE CameraColor;
        /// <summary>
        /// 相机名称
        /// </summary>
        public string CameraName;
        /// <summary>
        /// R触发
        /// </summary>
        public DoE StrobeR;
        /// <summary>
        /// G触发
        /// </summary>
        public DoE StrobeG;
        /// <summary>
        /// B触发
        /// </summary>
        public DoE StrobeB;
        /// <summary>
        /// W触发
        /// </summary>
        public DoE StrobeW;
        /// <summary>
        /// 相机触发
        /// </summary>
        public DoE CamTrigger;
        /// <summary>
        /// 左光机触发
        /// </summary>
        public DoE CamLeftDlp;
        /// <summary>
        /// 前光机触发
        /// </summary>
        public DoE CamFrontDlp;
        /// <summary>
        /// 右光机触发
        /// </summary>
        public DoE CamRightDlp;
        /// <summary>
        /// 后光机触发
        /// </summary>
        public DoE CamBackDlp;
        /// <summary>
        /// 标定配置
        /// </summary>
        public CalibrationConfi Calibration;
        /// <summary>
        /// 左光机拍照数量
        /// </summary>
        public int LeftDlpGrabNum;
        /// <summary>
        /// 前光机拍照数量
        /// </summary>
        public int FrontDlpGrabNum;
        /// <summary>
        /// 右光机拍照数量
        /// </summary>
        public int RightDlpGrabNum;
        /// <summary>
        /// 后光机拍照数量
        /// </summary>
        public int BackDlpGrabNum;
        /// <summary>
        /// 图像回调
        /// </summary>
        public Action<IFrameData> ImageCallback;
        /// <summary>
        /// 前轨配置
        /// </summary>
        public ConveyorConfi ConveyorFront;
        /// <summary>
        /// 后轨配置
        /// </summary>
        public ConveyorConfi ConveyorBack;
    }
}
